==================
Поиск для чайников
==================

Класс `Irbis\Teapot` поддерживает так называемый "поиск для чайников", т. е. запрос на языке, максимально приближенном к естественному, когда Web-приложение пытается самостоятельно найти документы, удовлетворяющие запросу.

.. code-block::php

    $connection = new Irbis\Connection();
    
    // код подключения к серверу опущен

    $expression = 'лед и пламя'; // запрос на естественном языке

    $teapot = new Irbis\Teapot();
    $teapot->limit = 100; // ограничение на количество найденных записей
    $found = $teapot->search($connection, $expression);

    if (!$found) {
        echo '<h3 style="color: red">Ничего не найдено</h3>' . PHP_EOL;
    }
    else {
        $format = '@infow_h'; // используемый формат, пусть будет самый простой -- информационный
        $found = $connection->formatRecords($format, $found);

        echo '<h3 style="text-align: center">Найдены документы:</h3>' . PHP_EOL;
        echo '<ol>' . PHP_EOL;
        foreach ($found as $item) {
            echo '<li style="margin-top: 1em;">';
            echo strip_tags($item, '<br>');
            echo '</li>' . PHP_EOL;
        }

        echo '</ol>' . PHP_EOL;
    }

Класс ``Teapot`` предоставляет следующие поля для настройки:

===================== =================== ================================================================
Поле                   Тип                 Назначение
===================== =================== ================================================================
prefixes               array               Массив префиксов для терминов (см. ниже).
suffix                 string              Суффикс для терминов (по умолчанию ``'$'``).
settings               RelevanceSettings   Настройки для оценки релевантности (см. ниже).
limit                  int                 Максимальное количество возвращаемых записей.
===================== =================== ================================================================

По умолчанию используются следующий набор префиксов:

===================== ================================================================
Префикс                Поисковый атрибут
===================== ================================================================
A=                     Индивидуальный автор/редактор
T=                     Поиск по заглавию
M=                     Коллективный автор (например, конференция)
K=                     Ненормированное ключевое слово
===================== ================================================================

Суффикс может иметь любое из следующих значений

===================== ================================================================
Суффикс                Значение
===================== ================================================================
''                     Пустая строка означает точное совпадение
'$'                    Совпадение с точностью до конца термина
'@'                    Поиск с учетом русской морфологии
===================== ================================================================

Класс ``RelevanceSettings`` содержит следующие поля

===================== =================== ====================================================================
Поле                   Тип                 Назначение
===================== =================== ====================================================================
coefficients           array               Массив коэффициентов релевантности (см. ниже).
extraneous             double              Релевантность для упоминаний в посторонних полях (по умолчанию 1).
multiplier             double              Мультипликатор для случая полного совпадения (по умолчанию 2).
===================== =================== ====================================================================

Класс ``RelevanceCoefficient`` предназначен для хранения коэффициентов релевантности и содержит следующие поля

===================== =================== ================================================================
Поле                   Тип                 Назначение
===================== =================== ================================================================
fields                 array               Массив меток полей, для которых действует данный коэффициент.
value                  double              Собственно значение коэффициента.
===================== =================== ================================================================

По умолчанию используется следующий набор коэффициентов для библиографической базы ``IBIS``

===================== ============== ================================================================
Метки полей            Коэффициент    Назначение поля
===================== ============== ================================================================
 ЗАГЛАВИЕ ИЛИ АВТОРЫ
 200                   10             Основное заглавие
 700, 701              10             Индивидуальные авторы
 710, 711, 971, 972    10             Коллективные авторы
 923                   10             Выпуск, часть
 922                   10             Статья сборника
 925                   10             Несколько томов в одной книге
 961                   10             Индивидуальные авторы
 962                   10             Коллективные авторы в общей части
 461                   10             Заглавие общей части
 463                   10             Издание, в котором опубликована статья
 РЕДАКТОРЫ
 702                   7              Редакторы
 ПРОЧИЕ ЗАГЛАВИЯ
 510                   7              Параллельное заглавие
 517                   7              Разночтение заглавия
 541                   7              Перевод заглавия
 924                   7              "Другое" заглавие
 921                   7              Транслитерированное заглавие
 СОДЕРЖАНИЕ
 330                   6              Оглавление
 922                   6              Статья из журнала
 РУБРИКИ
 606                   5              Предметная рубрика
 607                   5              Географическая рубрика
 600, 601              5              Персоналия
 965                   5              Дескриптор
 СЕРИЯ
 225                   4              Серия
 КЛЮЧЕВЫЕ СЛОВА
 610                   3              Ненормированное ключевое слово
 331                   3              Аннотация
===================== ============== ================================================================

При необходимости настройки для оценки релевантности можно загрузить из json-файла с помощью метода ``RelevanceSettings::load($filename)``.
